attribute vec3 aPosition;    
attribute vec3 aNormal;
attribute vec2 aTexCoord;       
varying vec3 vNormal;   
varying vec2 vTexCoord;       
uniform mat4 uModelMatrix;  
uniform mat4 uViewMatrix;   
uniform mat4 uProjMatrix;      

void main(void) {
    gl_Position = uProjMatrix * uViewMatrix * uModelMatrix * vec4(aPosition, 1);
    vNormal = mat3(uViewMatrix * uModelMatrix) * normalize(aNormal); 
    vTexCoord = aTexCoord;  
}